package demo2;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 姚东名
 * Date: 2024-06-07
 * Time: 23:10
 */

/**自定义异常
 * Java中虽然已经内置了丰富的异常类，但是并没有完全表示实际开发中遇到的一些异常，此时就需要维护符合我们实际情况的异常那个结构
 * 具体方法：
 * 1. 自定义异常类，然后继承自Exception或者 RunTimeException
 * 2. 实现一个带有String类型的构造方法，参数含义：出现异常的原因
 *
 * 注意事项：
 * 1.自定义类型通常会继承自Exception或 RunTimeException
 * 2.继承自Exception的异常默认是受查异常(Checked Exception) -> 编译时异常
 * 3.继承自RunTimeException的异常默认是受查异常(Unchecked Exception) -> 运行时异常
 */

//正常写法：
/*class Login {
    private String userName;//用户名
    private String passWord;//密码
    //成员变量由于由private限定词修饰，就需要输入与输出的构造方法
    //构造方法：
    public String getUserName() {
        return getUserName();
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassWord() {
        return userName;
    }
    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    //输入的密码与正确的密码进行对比，用到equals()方法，进行对比
    public void loginInfo(String userName, String passWord) {
        if(!this.userName.equals(userName)) {
            System.out.println("用户名错误！");
            return;
        }

        if(!this.passWord.equals(passWord)) {
            System.out.println("密码错误！");
            return;
        }

        System.out.println("登陆成功！");
    }

}*/

class Login {
    private String userName;//用户名
    private String passWord;//密码
    //成员变量由于由private限定词修饰，就需要输入与输出的构造方法
    //构造方法：
    public String getUserName() {
        return getUserName();
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassWord() {
        return userName;
    }
    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    //输入的密码与正确的密码进行对比，用到equals()方法，进行对比
    public void loginInfo(String userName, String passWord) throws UserNameException, PassWordException {
        if(!this.userName.equals(userName)) {
            throw new UserNameException("用户名错误异常...");
        }

        if(!this.passWord.equals(passWord)) {
            throw new PassWordException("密码错误异常...");
        }

        System.out.println("登陆成功！");
    }

}
public class Test {
    public static void main(String[] args) {
        Login login = new Login();
        login.setUserName("String");
        login.setPassWord("1234567");
        //方式1：
        //login.loginInfo("haha", "1234567");

        //方式2：用异常解决
        try {
            login.loginInfo("haha", "1234567");
        } catch (UserNameException e) {
            e.printStackTrace();
        } catch (PassWordException e) {
            e.printStackTrace();
        } finally {

        }
    }
}
